/* eslint-disable no-empty */
/* -----------注册全局组件----------- start*/
import BaseHeader from '@/components/layout/header'
import BaseTableSelect from '@/components/BaseTableSelect/table-select'
import searchSection from '@/components/search-section'
import BaseRow from '@/components/BaseRow/row'
import BaseCol from '@/components/BaseRow/col'
import BaseCard from '@/components/BaseCard/card'

/* -----------注册全局组件----------- end*/
import tool from '@/common/js/tool.js'
import { vIsMobile, vValidatePhone, vIsTypeOrder, vFormRadio, vPriceLimit, vFormPrice, numFormat, formTime, vNumber, vChangeTwoDecimal, tableHeaderDragend } from '@/assets/js/validate.js'
import { getCurrentFormattedTime, deepClone, toParams, getVpermis, getVByLabel, authoritymanagement,throttle} from '@/assets/js/utils.js'
import { handleClipboard} from '@/assets/js/clipboard.js'
import errorImg from '@/assets/img/discount.png'
import table from '@/config/table.js'

export default {
  install(Vue) {
    /* -----------注册全局组件----------- start*/
    // #region
    Vue.component('BaseHeader', BaseHeader) // 使用 BaseHeader  base-header
    Vue.component('BaseTableSelect', BaseTableSelect)
    Vue.component('searchSection', searchSection)
    Vue.component('BaseRow', BaseRow)
    Vue.component('BaseCol', BaseCol)
    Vue.component('BaseCard', BaseCard)
    // #endregion
    /* -----------注册全局组件----------- end*/
    Vue.prototype.$config = table
    // 自定义指令
    // 下载图片 本地存在跨域
    Vue.directive('down', {
      bind: (el, binding) => {
        el.style.cssText = 'cursor: pointer;color:write;'
        el.addEventListener('click', () => {
          console.log(binding.value)
          let link = document.createElement('a')
          let url = binding.value
          // 这里是将url转成blob地址，
          fetch(url)
            .then(res => res.blob())
            .then(blob => {
              // 将链接地址字符内容转变成blob地址
              link.href = URL.createObjectURL(blob)
              console.log(link.href)
              link.download = ''
              document.body.appendChild(link)
              link.click()
            })
        })
      }
    })
    /* 科学计数  begin*/
    Vue.prototype.$formatNumber = tool._formatNumber
    /* 编码解码字符串  begin*/
    // 编码
    Vue.prototype.$encodeString = tool._encodeString
    // 解码
    Vue.prototype.$decodeString = tool._decodeString
    /**
     * 跳转页面
     * @param {object} { path, query } path:跳转的路径,query:传参  query.replace 为true时，跳转方式为replace
     */
    Vue.prototype.$goPage = function({ path, query, meta }) {
      if (query) {
        const method = query.replace
        let obj = this.$encode({ ...query })
					obj.activeMenu = query.activeMenu || null
        if (method === true) {
          this.$router.replace({ path, query: obj, meta })
        } else {
          this.$router.push({ path, query: obj, meta })
        }
      } else {
        this.$router.push({ path, meta })
      }
    }
    //  判断对象里是否有空
    Vue.prototype.$itemEmpty = tool._itemEmpty
    // 判断是否为空
    Vue.prototype.$empty = tool._empty
    // 存储在本地（localStorage.setItem）
    Vue.prototype.$setLocalItem = tool._setLocalItem
    // 获取存储在本地（localStorage.getItem）
    Vue.prototype.$getLocalItem = tool._getLocalItem

    // 临时存储本地（sessionStorage.setItem）
    Vue.prototype.$setSessionItem = tool._setSessionItem
    // 获取本地临时存储数据（sessionStorage.setItem）
    Vue.prototype.$getSessionItem = tool._getSessionItem
    // 清空localStorage数据
    Vue.prototype.$removeLocalItem = tool._removeLocalItem
    // 清空sessionStorage数据
    Vue.prototype.$removeSessionItem = tool._removeSessionItem
    /**
     * @returns true 手机端
     */
    Vue.prototype.$isMobile = vIsMobile
    Vue.prototype.$encode = tool._encode
    Vue.prototype.$decode = tool._decode
    Vue.prototype.$parseStrObjByFor = tool._parseStrObjByFor
    // 获取文件名称
    Vue.prototype.$getFileName = tool._getFileName
    // 格式化时间
    Vue.prototype.$formDate = tool._formDate
    Vue.prototype.$sortBy = tool._sortBy
    // 格式化手机号
    Vue.prototype.$validatePhone = vValidatePhone
    // 判断订单类型
    Vue.prototype.$IsTypeOrder = vIsTypeOrder
    // 深拷贝
    Vue.prototype.$uDeepClone = deepClone
    // 节流
    Vue.prototype.$uThrottle = throttle
    // 复制
    Vue.prototype.$uCopy = handleClipboard
    // 当前时间
    Vue.prototype.$uGetCurrentFormattedTime = getCurrentFormattedTime
    // 转params
    Vue.prototype.$uToParams = toParams
    // 获取权限
    Vue.prototype.$getVpermis = getVpermis
    // 类别
    Vue.prototype.$getVByLabel = getVByLabel

    // 格式化比率
    Vue.prototype.$formRadio = vFormRadio
    // 格式化钱
    Vue.prototype.$priceLimit = vPriceLimit
    Vue.prototype.$formPrice = vFormPrice
    Vue.prototype.$numFormat = numFormat
    Vue.prototype.$formTime = formTime

    // 格式化数量
    Vue.prototype.$vNumber = vNumber
    // 格式化系数（小于等于1大于零保留两位小数）
    Vue.prototype.$vChangeTwoDecimal = vChangeTwoDecimal
    // 表头列宽变化重绘表格
    Vue.prototype.$tableHeaderDragend = tableHeaderDragend
    // 判断是否有权限
    Vue.prototype.$jurisdiction = function(str = '') {
      if (typeof str != 'string') return false
      return authoritymanagement(tool._getLocalItem('jx_RoleCode'), str) || false
    }
    Vue.prototype.$siteImg = `this.src=${errorImg}` // 图片占位图

    Vue.prototype.$bus = new Vue()
  }
}
